$(function($) {
	
	

	$("#comit").off().on("click", function() {
		var data={};
		var modeldata = $("#component_model").data("rowData");

		if (modeldata) {
			modeldata.primaryKey="ModelId";
			var value = JSON.stringify(data);
			data.modeldata=modeldata;
		}
		
	    var measuredata = {};
	    //循环获取 四遥中的  变化数据
        $.each($.config.measureTypeStr, function(index, type) {

            var table = $('#measure_' + type);
            var rowdata = table.data("rowData");
            if (rowdata) {
            	measuredata[type] = rowdata;

                table.removeData("rowData");
            }
        });
 
		if (measuredata) {
			measuredata.primaryKey="DataIndex";
			
			data.measuredata=measuredata;
		}
		
		data.extra={ eqptType:gPageParam.eqptType};
		var value1 = JSON.stringify(data);
		alert(value1);

	});

	$("#export").off().on("click", function() {

	});

	// 加载xml配置文件的结果
	var gridProperty = {
		displayFields : [],	
        primaryKey:"ModelId",
        measurePrimaryKey:"DataIndex",
		component_model : {
			datafields : [],
			columns : [] 

		},
		yc : {
			displayFields : [],
			datafields : [],
			columns : [] 
		},
		yx : {
			displayFields : [],
			datafields : [],
			columns : [] 
		},
		yk : {
			displayFields : [],
			datafields : [],
			columns : [] 
		},
		yt : {
			displayFields : [],
			datafields : [],
			columns : [] 
		}
	};
    var tableheight=0;
	if ((gPageParam.eqptType == $.config.eqptEnum.Fan)
			|| (gPageParam.eqptType == $.config.eqptEnum.PVI)) {
		tableheight=230;
		 $("#model_layout").show();
		initGridFields("component_model");

		initToolBar();
	} else {
		tableheight=0;
        $("#model_layout").hide();
	}
	// ////////////////////////////////////////////////////////////
	//
	// 加载配置文件，并形成界面
	// ////////////////////////////////////////////////////////////
	function initGridFields(tableid) {
		var url = "table_xml/component/ModelParam.xml";
		// prepare the data
		var source = tableSource(url);
		var ss = {};
		// 加载配置文件
		var dataAdapter = new $.jqx.dataAdapter(source, {
			autoBind : true,
			loadComplete : function() {
				// get data records.

				var records = dataAdapter.records;
				console.dir(records);

				var length = records.length;
				for (var i = 0; i < length; i++) {
					var record = records[i];
					var fields = {};
					fields["name"] = record.Field;
					gridProperty.displayFields.push(record.Field);
					gridProperty[tableid].datafields.push(fields);

					var column = {};
					column["datafield"] = record.Field;
					column["text"] = record.Desc;
					// 进程名称不可编辑
					if (record.Field == gridProperty.primaryKey)
						column["editable"] = false;

					gridProperty[tableid].columns.push(column);
				}

				// ================== 表格初始话数据加载完成了之后才初始化 tab，然后在tab的init中初始化表格

				initGrid(tableid);
			}
		});

	}

	// ///////////////////////////////////////////////////////////
	//   
	// 设备详细表格
	// ///////////////////////////////////////////////////////////
	function initGrid(tableid) {

		var source = {
			datatype : "csv",
			datafields : gridProperty[tableid].datafields,
			data : {
				feilds : gridProperty.displayFields.join(","),
				eqptType : gPageParam.eqptType
			},
			url : 'config/eqptModel!getList',
			id : gridProperty.primaryKey // 关联设备ID到
		};

		var dataAdapter = new $.jqx.dataAdapter(source, {
			async : false,
			loadError : function(xhr, status, error) {
				// alert('Error loading "' + source.url + '" : ' + error);
			}
		});

		var table = $("#" + tableid).jqxGrid({
			width : '99.5%',
			height : '200',
			theme : theme,
			editable : true,
			altrows : true,
			source : dataAdapter,
			// selectionmode : 'singlecell', //设置选择方式
			columns : gridProperty[tableid].columns
		}).on('cellvaluechanged', function(event) {

			var field = args.datafield;
			var rowindex = args.rowindex;
			var value = args.newvalue;
			if (!value)
				return;

			var row = table.jqxGrid('getrowdata', rowindex);
 
			// 设置变化值到缓存中
			if (!$(this).data("rowData"))
				$(this).data("rowData", {});
			var rowData = $(this).data("rowData");
			alert(JSON.stringify(row));
			var item = rowData[rowData[gridProperty.primaryKey]];
			if (item) {
				// 更新的，直接更新数据，更新对应字段的数据。
				// 添加的 ，不更新操作，直接更新数据。
				// 删除的，提示删除一条已经备删除的记录。
				if (item.handle == 'delete') {
					console.warn("错误，更新一条需要删除的记录");
				} else {
					item.val[field] = value;
				}
			} else {
				// 没有就创建一条更新的数据
				item = {};
				item.handle = 'update';
				item.val = {};
				item.val[field] = value;
			}

			rowData[rowData[gridProperty.primaryKey]] = item; // 更新到rowdata

			$(this).data("rowData", rowData);

		});

	}
	;

	// ////////////////////////////////////////////////////
	//
	// 工具栏添加删除按钮 功能实现
	// ////////////////////////////////////////////////////
	function initToolBar() {
		var toolAction = {
			tool_add : function() {
				//

				var currentTable = "#component_model";
				var eqpid = $.config.EqpId.get();
				var  key=gridProperty.primaryKey;
				var commit = $(currentTable).jqxGrid('addrow', null, {
					gridProperty.primaryKey : eqpid
				});

				if (!$(currentTable).data("rowData")) {
					$(currentTable).data("rowData", {});
				}
				var items = $(currentTable).data("rowData");
				var item = items[eqpid]; // 全局ID产生器
				// 如果之前有对改时间的删除项，则修改为更新项。
				if (item) {
					item.handle = 'update';
				} else {
					// 否则，新建插入项
					item = {};
					item.handle = 'insert';

				}
				item.val = {};

				items[eqpid] = item;
				$(currentTable).data("rowData", items);

			},
			tool_delete : function() {
				table = $("#component_model");
				// 设置为 'singlecell', 'multiplecells' or 'multiplecellsextended'
				// 需要使用getselectedcell 方法
				// var cell = table.jqxGrid('getselectedcell');
				// var selectedrowindex = cell.rowindex;
				var selectedrowindex = table.jqxGrid('getselectedrowindex');
				var rowscount = table.jqxGrid('getdatainformation').rowscount;
				if (selectedrowindex >= 0 && selectedrowindex < rowscount) {
					var id = table.jqxGrid('getrowid', selectedrowindex);

					// var row = table.jqxGrid('getrowdata', id);
					// alert(data.firstname + " " + data.lastname);

					if (!table.data("rowData")) {
						table.data("rowData", {});
					}
					var items = table.data("rowData");
					var item = items[id]
					if (item) {
						// 更新的，标识为删除。
						// 添加的，直接删除
						if (item.handle == 'update') {
							item.handle = 'delete';
						} else {
							delete items[id];

						}
					} else {
						// 没有该项，添加，并标识为删除
						item = {};
						item.handle = 'delete';
						items[id] = item;
					}

					$.config.EqpId.remove(id);

					table.data("rowData", items);

					var commit = table.jqxGrid('deleterow', id);

				}
			}
		};
		$(".tool_btn").on("click", function() {

			toolAction[$(this).attr("id")]();
		});

	}

	// ///////////********** 设备量测表初始化***********/////////////
	// //////////////////////////////////////////////////
	$('#measureTabs').jqxTabs(
			{
				width : '99.5%',
				height : 620-tableheight,
				theme : theme,
				collapsible : true,
				initTabContent : function(tab) {
					// The 'tab' parameter represents the selected tab's index.

					initPropertyGrid(tab);
					// var pageIndex = tab + 1;
					// loadPage('pages/ajax' + pageIndex + '.htm', pageIndex);
				}

			}).on('tabclick', function(event) {
		var tabclicked = event.args.item;
		currentTable = "#process_" + tableid[tabclicked];
		// alert('The clicked tab is ' + tabclicked);
		// alert( event.args.target );
	});
	// ///////////////////////////////////////////////////////////////////
	// 加载配置文件，并形成界面
	// measureType 通道或是驱动
	// driverType 具体通道或是驱动的类型
	// ///////////////////////////////////////////////////////////////////
	function initPropertyGrid(measureType) {

		var source = {
			datatype : "xml",
			datafields : [ {
				name : 'Desc',
				map : 'm\\:properties>d\\:Desc'
			}, {
				name : 'Field',
				map : 'm\\:properties>d\\:Field'
			}, {
				name : 'DefaultValue',
				map : 'm\\:properties>d\\:DefaultValue'
			}, {
				name : 'DataType',
				map : 'm\\:properties>d\\:DataType'
			}, {
				name : 'Enum',
				map : 'm\\:properties>d\\:EnumData' // 在低版本中，xml的项必须存在，且不能为空，高版本中可以不存在，且能为空，所以在没有枚举量的xml项中补填N作为占位
			} ],
			root : "content",
			// record : "content",
			id : 'm\\:properties>d\\:Field',
			url : "table_xml/component/DataEnum.xml"
		};
		// 加载配置文件
		var dataAdapter = new $.jqx.dataAdapter(
				source,
				{
					autoBind : true,
					loadComplete : function() {
						// get data records.
						var records = dataAdapter.records;
						var length = records.length;
						for (var i = 0; i < length; i++) {
							var record = records[i];
							var fields = {};
							fields["name"] = record.Field;
							gridProperty[$.config.measureTypeStr[measureType]].displayFields
									.push(record.Field);
							gridProperty[$.config.measureTypeStr[measureType]].datafields
									.push(fields);

							var column = {};
							column["datafield"] = record.Field;
							column["text"] = record.Desc;

							// 根据 配置项的多少决定是否设置宽度
							var width = $("#measureTabs").width();
							if ((length * 100) > width)
								column["width"] = 100;
							// 数据全局id禁止编辑
							if (record.Field == 'DataId') {
								column["editable"] = false;
								column["cellvaluechanging"] = function(row,
										datafield, columntype, oldvalue,
										newvalue) {
									newvalue = oldvalue;
									return oldvalue;
								}
								column['disable'] = true;

							}

							gridProperty[$.config.measureTypeStr[measureType]].columns
									.push(column);
						}

						// ================== 表格初始话数据加载完成了之后才初始化
						// tab，然后在tab的init中初始化表格
						return crateGird(measureType);
					}
				});

		// ////////////////////////////////////////////////////////////////
		// 通过配置文件加载的数据项，形成数据表格框架，并加根据 driverType加载表格数据
		//
		// ////////////////////////////////////////////////////////////////
		function crateGird(measureType) {

			var source = {
				datatype : "csv",
				datafields : gridProperty[$.config.measureTypeStr[measureType]].datafields,
				data : {
					extra : JSON.stringify({
						DataType : measureType,
						EqptType : gPageParam.eqptType

					}),
					feilds : gridProperty[$.config.measureTypeStr[measureType]].displayFields
							.join(",")
				},
				url : "config/eqptModel!getMeasure"
			};

			var dataAdapter = new $.jqx.dataAdapter(source, {

				loadError : function(xhr, status, error) {

				}
			});

			var table = $("#measure_" + $.config.measureTypeStr[measureType])
					.jqxGrid(
							{
								width : '99.5%',
								height : '99.5%',
								theme : theme,
								columnsresize : true, // 设置可调整columns大小
								editable : true,
								altrows : true,

								enablebrowserselection : false, // 禁止浏览器文本选择功能

								selectionmode : 'multiplecellsadvanced', // 'multiplecellsadvanced',
								// //'multiplecellsextended'
								// , //设置选择方式
								source : dataAdapter,
								ready : function() {

								},
								// selectionmode : 'singlecell', //设置选择方式
								columns : gridProperty[$.config.measureTypeStr[measureType]].columns
							}).on('cellvaluechanged', function(event) {

						var field = args.datafield;
						var rowindex = args.rowindex;
						var value = args.newvalue;
						if (!value)
							return;

						var row = table.jqxGrid('getrowdata', rowindex);
						var oldvalue = args.oldvalue;
						// 设置变化值到缓存中
						if (!$(this).data("rowData"))
							$(this).data("rowData", {});
						var rowData = $(this).data("rowData");
						var item = rowData[row.DataId];
						if (item) {
							// 更新的，直接更新数据，更新对应字段的数据。
							// 添加的 ，不更新操作，直接更新数据。
							// 删除的，提示删除一条已经备删除的记录。
							if (item.handle == 'delete') {
								console.dir("错误，更新一条需要删除的记录");
							} else {
								item.val[field] = value;
							}
						} else {
							// 没有就创建一条更新的数据
							item = {};
							item.handle = 'update';
							item.val = {};
							item.val[field] = value;
						}

						rowData[row.DataId] = item; // 更新到rowdata

						$(this).data("rowData", rowData);

						// console.dir(column + '==' + row + "===" + value +
						// $(this).attr('id'));

					});

			return table;
		}

	}
});